package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateRenewManageGetDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyInvoiceInfoDTO;
import com.itlong.cloud.POJO.VO.operate.OperateBusinessOperationLogVO;
import com.itlong.cloud.POJO.VO.operate.OperateRenewManageGetVO;
import com.itlong.cloud.POJO.VO.property.PropertyInvoiceInfoVO;
import com.itlong.cloud.utils.page.Page;

import java.util.Map;

/**
 * <desc>
 *      运营-财务续费管理服务层接口
 * </desc>
 *
 * @createDate 2019/08/05
 */
public interface IOperateRenewManageService {

    /**
     * <desc>
     *      分页获取财务续费信息
     * </desc>
     *
     * @param operateRenewManageGetDTO 获取财务续费信息DTO
     * @return 分页财务续费信息
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Page<OperateRenewManageGetVO> getPage(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      获取财务续费信息详情
     * </desc>
     *
     * @param operateRenewManageGetDTO 获取财务续费信息DTO
     * @return 财务续费信息详情
     * @author wangzhi
     * @createDate 2019/08/05
     */
    OperateRenewManageGetVO getOne(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      财务续费收款确认
     * </desc>
     *
     * @param operateRenewManageGetDTO 财务续费收款确认DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/27
     */
    Integer confirm(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      财务续费审批
     * </desc>
     *
     * @param operateRenewManageGetDTO 财务续费审批DTO
     * @return 1成功 0失败
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Integer accept(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      获取财务续费信息总金额
     * </desc>
     *
     * @param operateRenewManageGetDTO 财务续费审批DTO
     * @return 财务续费信息总金额
     * @author wangzhi
     * @createDate 2019/08/07
     */
    String getTotalAmount(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      财务续费管理附加信息
     * </desc>
     *
     * @param operateRenewManageGetDTO 财务续费DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/22
     */
    Map<String, Object> getAppendInfo(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      获取发票信息
     * </desc>
     *
     * @param operateRenewManageGetDTO 发票信息DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/22
     */
    PropertyInvoiceInfoVO getBillInfo(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

    /**
     * <desc>
     *      开票
     * </desc>
     *
     * @param propertyInvoiceInfoDTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/25
     */
    Integer billing(PropertyInvoiceInfoDTO propertyInvoiceInfoDTO) throws Exception;

    /**
     * <desc>
     *      获取财务续费订单业务日志
     * </desc>
     *
     * @param operateRenewManageGetDTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/27
     */
    Page<OperateBusinessOperationLogVO> getLogPage(OperateRenewManageGetDTO operateRenewManageGetDTO) throws Exception;

}
